Designing and implementing the user interface is a challenging part of creating a software application. A user interface should be simple and intuitive enough for less technically inclined users, yet at the same time should be powerful and offer more savvy users access to advanced features. Because the levels of technical experience and sophistication vary so greatly between different users, it can be preferable to provide multiple user interfaces for different users, rather than attempting to implement a one size fits all solution.
One conventional solution to this problem is to offer various interface choices to the user when the software application is installed or runs. For example, the user could be prompted as to whether s/he would like a beginner's user interface or an advanced user interface. However, this places certain burdens on the user. First of all, less sophisticated users often do not know what level of interface would be the best fit for them. Very inexperienced users might not even understand the question being asked. Additionally, many less sophisticated users fancy themselves as being more savvy than they actually are, and could select an advanced option which is in fact not appropriate for them. Furthermore, even where a user has a good idea of what level of interface is appropriate, requiring the user to input this information slows down the installation process and can potentially detract from the overall user experience.
Another conventional solution is to change the user interface over time, based on which functions of the application the user actually selects (e.g., remove unselected options from menus over time, etc.). The problem with this is that all users start with the same interface, and only over time is the interface adjusted for the individual user. Thus, a given user can start out running an interface that is either too complicated or too simple. Additionally, the functions of the individual application that a user does or does not utilize within a given period of time is a limited measurement of the user's experience level, and does not necessarily result in an appropriate interface for the user.
It would be desirable to address these issues.